#include <algorithm>
#include <iostream>
using namespace std;

void solve() {
    int n;
    cin >> n;

    int a[2 * n + 1];   // array
    bool f[2 * n + 1];  // flag for a
    int child[2 * n + 1];

    for (int i = 0; i < 2 * n; i++)
        cin >> a[i];

    sort(a, a + 2 * n);

    // guess the pair, where x = a[i] + a[2*n-1]
    for (int i = 0; i < 2 * n - 1; i++) {
        for (int j = 0; j < 2 * n; j++) {
            f[j] = true;
        }

        child[2 * n] = 2 * n - 1;
        a[2 * n] = a[i] + a[2 * n - 1];

        f[i] = false;
        f[2 * n - 1] = false;

        int p = 2 * n - 1;  // pointer to the current biggest;

        bool succ = true;
        for (int j = 0; j < n - 1; j++) {
            int q = p;     // next biggest
            while (!f[q])  // find the next biggest;
                q--;
            f[q] = false;

            bool found = false;
            for (int k = 0; k < 2 * n - 1; k++)
                if (f[k] && a[k] + a[q] == a[p]) {
                    found = true;
                    f[k] = false;
                    child[p] = q;
                    break;
                }

            if (!found) {
                succ = false;
                break;
            }
            p = q;
        }

        if (succ) {
            cout << "YES" << endl;
            cout << a[i] + a[2 * n - 1] << endl;
            int p = 2 * n;
            for (int k = 0; k < n; k++) {
                cout << a[p] - a[child[p]] << " " << a[child[p]] << endl;
                p = child[p];
            }
            return;
        }
    }
    cout << "NO" << endl;
}

int main() {
    int t;
    cin >> t;
    while (t-- > 0)
        solve();
    return 0;
}